MySQL De Postcodes tabel verbinden met de Personen tabel
Home

MySQL De Postcodes tabel verbinden met de Personen tabel

MySQL De Postcodes tabel verbinden met de Personen tabel

Om de Postcodes tabel te linken aan de Personen tabel moeten we eerst een primaire sleutel toekennen aan de Postcodes tabel en daarna een vreemde sleutel toevoegen aan de Personen tabel die verwijst naar de Postcodes tabel.

Probleem

We hebben al de tabel Postcodes en die willen we linken aan de tabel Personen.

Design

  1. Een PK kolom met naam Id van het gegevenstype int en autoincrement aan de tabel Postcode toevoegen.
  2. Voeg een PK constraint toe aan de tabel Postcode op de kolom Id.
  3. Insert een rij in de tabel Postcode met voor de kolom Code de waarde 0000, Plaats en Provincie de waarde Onbekend, Localite en Province de waarde Onbekend.
  4. Voeg een FK kolom toe aan de tabel Personen met de naam IdPostcode van het gegevenstype int.
  5. Update deze FK kolom met de Id van de rij met Postcode 0000.
  6. Voeg een FK constraint toe aan de tabel Personen voor de FK IdPostcode.

Sla de scripts op in een bestand met de naam PersonenPostcodesNormalize.sql.

Oplossing

use ModernWays;
-- een pk kolom met naam Id toevoegen
alter table Postcodes add Id int auto_increment not null;
-- voeg een fk constraint toe aan Personen
alter table Postcodes add constraint pk_Postcodes_Id primary key(Id);
-- voeg een dummy postcode toe

insert into Postcodes (
   Code,
   Plaats,
   Provincie,
   Localite,
   Province
) 
values (
   '0000',
   'Niet van toepassing',
   'Niet van toepassing',
   'Non applicable',
   'Non applicable'
);

-- voeg een fk kolom toe als die nog niet bestaat
alter table Personen add IdPostcode int;
-- in de eerste 3 IdPostcode kolommen de waarde van de 8400 postcode plaatsen
update Personen set IdPostcode = (select Id from Postcodes where Code = '8400')
   where Id <= 3;
-- de volgende drie met 2000, 9000, 1000 enz
alter table Personen add 
   constraint fk_PersonenPostcodes_IdPostcode
   foreign key(IdPostcode)
   references Postcodes(Id);

JI

2018-05-21 21:01:07